1. Field of the Invention
The invention relates to IBM PC AT-compatible computer architectures, and more particularly, to enhancements thereof for communicating with I/O peripheral devices.
2. Description of Related Art
The IBM PC/AT.RTM. computer architecture has become an industry standard architecture for personal computers and is typically built around a host CPU such as an 80386, 80486 or Pentium.RTM. microprocessor manufactured by Intel Corporation, or similar microprocessors manufactured by others. The host CPU is coupled to a host bus, capable of performing memory accesses and data transfers at high rates of speed (i.e., on the order of 25-100 MHz with today's technology). The host bus includes 32 or, in the case of computers built around the Pentium, 64 data lines, a plurality of address lines, and various control lines. The typical IBM PC AT-compatible platform also includes DRAM main memory, and in many cases a timer, a real-time clock, and a cache memory.
The typical IBM PC AT-compatible computer also includes an I/O bus, also know as a system bus or AT-bus, which is separate and distinct from the host bus. The system bus usually conforms to one of two industry-established standards known as ISA (Industry Standard Architecture) and EISA (Extended ISA). The system bus is coupled to the host bus via a host-bus/system-bus bridge, and includes, depending on the system bus standard adhered to, 16 or 32 data lines, a plurality of address lines, as well as control lines. The I/O address space is logically distinct from the memory address space and if the CPU desires to access an I/O address, it does so by executing a special I/O instruction. Such an I/O instruction generates memory access signals on the host bus, but also activates an M/IO# signal on the host bus to indicate that this is an access to the I/O address space. The host-bus/system-bus bridge recognizes the I/O signals thereby generated by the CPU, performs the desired operation over the system bus, and if appropriate, returns results to the CPU over the host bus.
In practice, some I/O addresses may reside physically on the host bus and some memory addresses may reside physically on the system bus. More specifically, the devices which respond to accesses to certain I/O space addresses may be connected to the control lines (and usually the address and data lines as well) of the host bus, while the devices which respond to accesses to certain memory space addresses may be connected to the control lines (and usually the address and data lines as well) of the system bus. The host-bus/system-bus bridge is responsible for recognizing that a memory or I/O address access must be emulated by an access to the other bus, and is responsible for doing such emulation. For example, a ROM (or EPROM) BIOS may reside physically on the system bus, but actually form part of the local memory address space. During system boot, when the CPU sends out a non-I/O address which is physically within the ROM BIOS, the host-bus/system-bus bridge recognizes such, enables a buffer (considered herein as being part of the host-bus/system-bus bridge) which couples the address onto the system bus, and activates the chip select for the ROM. The bridge then assembles a data word of the size expected by the host CPU, from the data returned by the ROM, and couples the word onto the host bus for receipt by the CPU. In many systems, at some point during the ROM-based boot-up procedure, the ROM BIOS is copied into equivalent locations in the DRAM main memory, which does reside on the host bus, and thereafter accessed directly.
In the standard architecture, the logical main memory address space is divided into a low memory range (0h-9FFFFh), a reserved memory range (A0000h-FFFFFh) and an extended memory range (10000h to the top of memory). In a typical system the system ROM BIOS is located logically at memory space addresses F0000h FFFFFh, and resides physically on the system bus. Addresses C0000h-EFFFFh contain ROM BIOS portions for specific add-on cards and reside physically on their respective cards on the system bus. Addresses A0000h-BFFFFh contain the video buffer, which is a part of a video controller residing on the system bus. Duplicate memory space is typically provided in DRAM on the host bus for addresses C0000h-FFFFFh, and the user of the system can select during a setup procedure, which portions of the ROM BIOS are to be "shadowed" by being copied into the duplicate DRAM space during boot-up.
In addition to the above elements, a keyboard controller typically also resides on the system bus, as does the timer and real-time clock. A typical IBM PC AT-compatible system may also include a DMA controller which permits peripheral devices on the system bus to read or write directly to or from main memory, as well as an interrupt controller for transmitting interrupts from various add-on cards to the CPU. The add-on cards are cards which may be plugged into slot connectors coupled to the system bus to increase the capabilities of the system. Add-on cards are also sometimes referred to as expansion cards or accessory cards.
General information on the various forms of IBM PC AT-compatible computers can be found in IBM, "Technical Reference, Personal Computer AT" (1985), in Sanchez, "IBM Microcomputers: A Programmer's Handbook" (McGraw-Hill: 1990), in MicroDesign Resources, "PC Chip Sets" (1992), and in Solari, "AT Bus Design" (San Diego: Annabooks, 1990). See also the various data books and data sheets published by Intel Corporation concerning the structure and use of the iAPX-86 family of microprocessors, including Intel Corp., "Pentium.TM. Processor", Preliminary Data Sheet (1993); Intel Corp., "Pentium.TM. Processor User's Manual" (1994); "i486 Microprocessor Hardware Reference Manual", published by Intel Corporation, copyright date 1990, "386 SX Microprocessor", data sheet, published by Intel Corporation (1990), and "386 DX Microprocessor", data sheet, published by Intel Corporation (1990). All the above references are incorporated herein by reference.
The various signals on the host bus include the input/output signals of whichever microprocessor the system is built around. Such signals are therefore well known in the industry and can be determined by reference to the above-incorporated publications. The various signals on the system bus also are well known in the industry. The Solari book incorporated above describes the lines in detail. For present purposes, only the following signals are important:
TABLE I ______________________________________ ISA BUS SIGNALS ISA BUS SIGNAL NAME ISA BUS SIGNAL DESCRIPTION ______________________________________ SA(19:0) 20 address lines. Sufficient to address 1MB of memory. Only SA(15:0) are used to address the 64k I/O address space, and only SA(9:0) are used to address the basic 1k AT I/O address space. LA(23:17) Additional address lines for addressing a 1GMB memory address space on the system bus. The LA lines are valid earlier in an I/O bus cycle, but must be latched if needed later in the cycle. The SA lines are not valid as early as the LA lines, but remain valid longer. BALE Bus address latch enable line. In a CPU initiated system bus cycle, this line indicates when the SA address, AEN and SBHE# lines are valid. In other system bus cycles, the platform circuitry drives BALE high for the entire cycle. SBHE# System byte high enable. When SBHE# is active and SA(0) is low, then a 16- bit access will be performed. AEN When active, informs I/O resources on system bus to ignore the address and I/O command signals. Used primarily in DMA cycles where only the I/O resource which has requested and received a DMA acknowiedgment signal (DACK#) knows to ignore AEN and respond to the system bus signal lines. Some systems include slot- specific AEN.sub.x signal lines. SAID(15:0) 16 data lines. MEMR#, Read request lines to a memory SMEMR# resource on the system bus. 5MEMR# is the same as MEMR# except that SMEMR# becomes active only when the read address is below 1MB (i.e., LA(23:20) = 0). Aiso called MRDC# and SMRDC#; respectively. MEMW# Write request lines to a memory SMEMW# resource on the system bus. SMEMW# becomes active only when the write address is below 1MB. Also called MWTC# and SMWTC#, respectively. IOR# Read request line to an I/O resource on the system bus. Also called IORC#. IOW# Write request line to an I/O resource on the system bus. Also called IOWC#. MEMCS16# Memory chip select 16. Asserted by an addressed memory resource on the system bus if the resource can support a #6-bit memory access cycle. IOCS16# I/O chip select 16. Asserted by an addressed I/O resource on the system bus if the resource can support a 16- bit I/O access cycie. SRDY# Synchronous Ready line. Also sometimes called OWS#, NOWS# or ENDXFR#. Activated by an addressed I/O resource to indicate that it can support a shorter-than-normal access cycle. IOCHRDY I/O channel ready line. If this signal is deactivated by an addressed I/O resource, the cycle will not end until it is reactivated. A deactivated IOCHRDY supersedes an activated SRDY#. Also sometimes called CHRDY. MASTER# After requesting and receiving a DMA- acknowledged (DACK#) signal, a system bus add-on card can assert MASTER# to become the system bus master. REFRESH# Activated by refresh controller to indicate a refresh cycle. IRQ(15, 14, Interrupt request lines to the 12:9, 7:3) interrupt controller for CPU. DRQ(7:5, DMA Request lines from I/O resource on 3:0) system bus to platform DMA controller. DACK(7:5, DMA Acknowledge lines. 3:0) TC DMA terminal count signal. Indicates that all data has been transferred. Also called T/C. BCLK System bus clock signal. 6-8.33MHz square wave. OSC 14.318MHz square wave. ______________________________________
Note that some of the signals described in this specification are asserted high, whereas others are asserted low. As used herein, signals which are asserted low are given a `#` or `B` suffix in their names, whereas those asserted high (or for which an assertion polarity has no meaning) lack a `#` or `B` suffix. Also, two signal names mentioned herein that are identical except that one includes the `#` or `B` suffix while the other omits it, are intended to represent logical compliments of the same signal. It will be understood that one can be generated by inverting the other, or both can be generated by separate logic in response to common predecessor signals.
Recently, efforts have been made to reduce the size and improve the manufacturability of PC AT-compatible computers. Specifically, efforts have been made to minimize the number of integrated circuit chips required to build such a computer. Several manufacturers have developed "PC AT chipsets" (also known as "core logic chipsets" or "I/O bus interface circuitry"), which integrate a large amount of the host-bus/system-bus bridge circuitry and other circuitry onto only a few chips. An example of such a chipset is the 386WB PC/AT chipset manufactured by OPTi, Inc., Santa Clara, Calif. These chipsets implement the host-bus/system bus bridge, the timer, real-time clock (RTC), DMA controller, as well as some additional functionality.
In the original IBM PC AT computers manufactured by IBM Corp., the system bus operated with a data rate of 8 MHz (BCLK=8 MHz). This was an appropriate data rate at that time since it was approximately equivalent to the highest data rates which the CPUs of that era could operate with on the host bus. Numerous third party vendors have since developed peripheral devices and controller cards which are intended to be plugged into an AT (ISA) slot on the system bus, and which rely upon the 8 MHz maximum data rate. The AT standard also requires a wait state (i.e. 125 nS) for 16-bit data transfers, and four wait states (500 nS) for 8-bit data transfers. A zero wait state data transfer is also available, but only if the peripheral device signals, by activating the SRDY# control line on the system bus, that it can handle such fast data transfers.
In the years since the IBM PC AT was originally introduced, technology has improved dramatically to the point where host buses on high-end PC AT-compatible computers can operate on the order of 100 MHz. Despite these advances, however, such computers are still manufactured with a system bus operating at around 8 MHz because of the need to maintain compatibility with previously designed peripheral devices. These devices were designed in reliance upon the 8 MHz data rate and AT wait state protocol, and many such devices are not capable of operating faster. Even modern designs for AT bus peripherals often rely on the 8 MHz maximum data rate, even though very little additional effort or cost would be involved to design them to operate faster.
In addition to the large disparity between data transfer rates on the system bus as compared to the host bus in modern PC AT-compatible computers, the host-bus/system-bus bridge circuitry needs to delay its handling of requests and responses from one bus to the other merely because the clocks are not synchronized. The circuitry therefore must hold a request or response until the appropriate clock edge on the destination bus appears. This can add on the order of 30-200 nS to each system bus cycle. Accordingly, it can be seen that any access to a peripheral device on the system bus imposes a substantial penalty on the performance of PC AT-compatible computers. This penalty will only become worse as the disparity between the host bus and system bus data rates continues to increase.
The penalty applies for most types of peripheral devices, but in the past it has been most noticeable for video display controllers. Video display controllers have a command port which responds to accesses in the I/O address space, as well as a video memory port which responds to accesses in the memory address space. Manufacturers have traditionally placed both ports on the system bus, however, thereby imposing the speed limitations of the system bus on the video memory port as well as the command port. U.S. patent application Ser. No. 07/851,444, filed Mar. 16, 1992 (Attorney Docket No. OPTI3030WSW), owned by the assignee of the present application and incorporated herein by reference in its entirety, describes certain attempts to permit accesses to the video memory port to take place over the host bus instead of the system bus. In addition, some graphics chip vendors have tried incorporating features into their chips for connection directly to a host bus.
For example, see S3, Inc., "86C911 GUI Accelerator", Databook (April 1992), incorporated herein by reference.
However, these solutions all suffer from the problem that they are non-standard. That is, if a vendor of I/O interface chipsets provides for a host bus capability, there is no assurance that it will interface directly with products made by more than one peripheral device controller vendor. A layer of buffers and glue logic therefore may be required to enable such peripheral device controllers to take advantage of the host bus feature, and the glue logic may be different for each different peripheral controller. On the other hand, if a maker of peripheral device controllers, such as a maker of a VGA (Video Graphics Adapter) controller, provides for a host bus capability in the peripheral controller, there is no guarantee that it will interface correctly with the host-bus/system-bus bridge chipsets made by more than one chipset manufacturer. Again, different buffers and glue logic may be required for each vendor of chipsets.
In two different efforts for ameliorating the above problem, instead of creating a private standard, two different organizations have defined different bus protocols and attempted to promulgate them as standards for the entire personal computer industry. One such standard, referred to herein as the VESA (Video Electronics Standards Association) or VL-Bus standard, is defined in VESA, "VESA VL-Bus Local Bus Standard", Revision 1.0 (1992), incorporated herein by reference. Significant aspects of the VL-Bus specifications are described in Appendix A hereto. Further revisions of the VESA standard are in preparation, one recent version being VESA, "VESA VL-Bus Proposal, Version 2.0p, Revision 0.8p (May 17, 1993), also incorporated herein by reference. The other such standard, referred to herein as the PCI standard, is defined in Intel Corp., "Peripheral Component Interconnect (PCI), revision 1.0 Specification" (Jun. 22, 1992) and in PCI Special Interest Group, "PCI Local Bus Specification", Revision 2.0 (Apr. 30, 1993), both incorporated herein by reference. Significant aspects of the PCI 2.0 Bus specifications are described in Appendix B hereto. Each standard has advantages and disadvantages over the other, and depending on the application, one standard or the other may be more beneficial to have in a system.
For example, one advantage of the VL-bus is that it is relatively simple to include in a personal computer system, especially those built around an Intel 486 microprocessor. This is because the VL-bus signal lines are similar to signal lines of the 486 CPU, except for a few additional signal lines included on the VL-bus. Thus the only additional expense required to add a VL-bus to a pre-existing 486-based computer design, is a very small VL-bus controller to handle the additional signal lines. Such a controller has already been included in chipsets. An example of such a chipset includes the OPTi 82C802G and either the 82C601 or 82C602, all incorporated herein by reference. The 82C802G is described in OPTi, Inc., "OPTi PC/AT Single Chip 82C802G Data Book", Version 1.2a (Dec. 1, 1993), and significant aspects are also set forth in Appendix C hereto. The 82C601 and 82C602 are described in OPTi, Inc., "PC/AT Data Buffer Chips, Preliminary, 82C601/82C602 Data Book", Version 1.0e (Oct. 13, 1993), and significant aspects are also set forth in Appendix D hereto. Both data books are incorporated herein by reference in their entirety.
While a minimum VL-bus system requires no additional circuitry, the insertion of a simple host-bus/VL-bus bridge provides buffering for additional VL-bus devices. For Pentium.RTM.-based systems, the host bus of which has a 64-bit wide data path, the bridge could also include circuitry to break up a 64-bit host-bus originated access, into two 32-bit VL-bus accesses. Such circuitry is still relatively simple. (Extension to the 32-bit VL-bus standard have been proposed in order to accommodate 64-bit access in a single VL-bus cycle, but in general, as the data path of host CPUs continues to expand, it can be expected that at least some future system designs will continue to employ a bridge which breaks up a wider-data-path host bus access into two, four, or some other number of narrower-data-path cycles on the VL-bus.)
A primary advantage of the PCI-bus, on the other hand, is its processor independence. The PCI-bus was intended to provide very high-speed accesses using a standard bus protocol, and to interface those accesses with any host processor bus using an appropriate host-bus/PCI-bus bridge. The host-bus/PCI-bus bridge is significantly more expensive than the circuitry required to implement a VL-bus, but the independence it provides from ever-faster and ever-more varied host processor buses provides a stable target for designers of peripheral products. A peripheral device designed for the PCI-bus would not need to be redesigned for each new version of an Intel microprocessor, or indeed, for each new microprocessor that might in the future power a personal computer system.
To date, neither the VL-bus standard nor the PCI-bus standard has achieved dominance in the marketplace for personal computer systems or in the marketplace for peripheral devices. Thus peripheral device manufacturers designing cards intended to bypass the slow system bus, still usually must design one version of the card for the PCI-bus and one version for the VL-bus. Similarly, computer system integrators and chipset manufacturers often find themselves having to double their product offerings since each market segment for VL-bus systems can have an equivalent but separate market segment for PCI-bus systems.
It is possible to overcome these problems by designing a computer system which incorporates both VL-bus expansion slots and PCI-bus expansion slots, in addition to the standard ISA- or EISA-bus expansion slots. The motherboard circuitry to implement this would be expected to include programmable registers which would indicate whether a particular valid cycle definition on the host bus is to be handled by a device on the host bus (such as main memory), a device on the VL-bus (which may be the same as the host bus in 486 systems), by a device on the PCI-bus, or by a device on the system bus. Such motherboard circuitry would be expensive, however, and may require an entirely new chipset design.
In Acer Laboratories, Inc., "M1435 PCI-VL.sub.-- Bus Bridge, Preliminary Datasheet" (Sep. 20, 1993), incorporated by reference herein, there is described a VL-bus/PCI-bus bridge chip which, together with the Acer M1429kG/M1429 VESA chip, permits both a VL-bus and a PCI-bus to be included in a single system. According to the datasheet, when the M1435 chip detects a valid VL-bus cycle, it first determines whether the cycle is intended for system memory or for another VL-bus device. The chip is believed to perform a positive decode of the address to determine whether the cycle is intended for system memory, and it observes the LDEV signal to determine whether the cycle has been claimed by another VL-bus device. If neither is the case, then the M1435 translates the cycle to the PCI-bus. If no PCI agent claims the translated PCI cycle, then the M1435 asserts an ISA REQJ signal to the M1429 chip, thereby informing the M1429 to start an ISA cycle. See also Acer Laboratories, Inc., "M1429G/M1431/M1435 Data Sheet" (October 1993), incorporated herein by reference.
The Acer technique for accommodating both the VL-bus and PCI-bus in a single system is limited in that it operates only with a host-bus/system-bus interface chipset which observes and understands the ISA REQJ signal asserted by the M1435 bridge. Other inter-chip signals may also be required between the M1435 and M1429. Since most interface chipsets do not understand these signals, such chipsets would have to be modified by the chipset manufacturer before they could be used with the M1435 bridge. It would be desirable, therefore, to provide a VL-bus/PCI-bus bridge which does not require modification of any existing VL-bus/system-bus chipset. Such a bridge could be used in conjunction with the chipset of any manufacturer which supports the VL-bus.